iT邦幫忙

2024 iThome 鐵人賽

0
Python

利用Python完成自動化測試專案系列 第 26 篇

D26 allure 截圖實作(1)

  • 分享至 

  • xImage
  •  

這次要在 allure 內新增截圖。當 case 結束時,會在程式關閉瞬間截圖並在 allure 裡面的 case 顯示。
https://ithelp.ithome.com.tw/upload/images/20241117/20169358g6TUiX5Ncy.jpg
這樣會比起看 step 哪邊出錯更好找 bug,也比較好判斷問題在哪(例如網頁 loading 太久或是沒有成功抓到元素等等)。

要實現截圖並放在 allure 的功能不難,只要用 allure.attach 即可。

from allure_commons.types import AttachmentType

allure.attach(self.browser.get_screenshot_as_png(), name="Screenshot", attachment_type=AttachmentType.PNG)

截圖功能最複雜的地方是要在 case 結束的時候截圖,目前我們是在 test 的開頭初始化瀏覽器,這樣不好實作截圖功能,因此這次我們要把瀏覽器初始化的部分獨立出來。

而我們要做的第一步是把原本在 test 上面初始化瀏覽器的區塊移到獨立的 py 檔。

browser. py

在一開始寫自動化的時候,由於 case 跟執行的操作只有一個,所以把瀏覽器初始化的部分直接寫在 test 上,但是在實際寫網頁自動化測試專案的時候 case 絕對不會只有一條,所以遲早都要把瀏覽器的部分抽出來。

browser. py

class Browser:
    def __init__(self) -> None:
        pass
    
    def get_browser(self):
        # 設定 ChromeDriver 的路徑
        browesr_path = "c:\Program Files\chromedriver-win64\chromedriver-win64\chromedriver.exe"

        service = Service(browesr_path)

        # 設定 Chrome 的啟動參數
        options = Options()

        # 設定瀏覽器語言為中文
        options.add_argument("--lang=zh-TW")

        # 全螢幕模式
        options.add_argument("--kiosk")

        browser = webdriver.Chrome(service=service, options=options)

        return browser

除了把原本的 def 改成 Class 以外,基本上就是直接搬過來。會改成 Class 的原因是因為要在 conftest 上執行。

下一篇會介紹 conftest 以及做完截圖的部分。在講 fixture 的時候沒介紹到 conftest,在下一篇也會一併展示 conftest 強大的地方。


上一篇
D25 allure 報表(3)
下一篇
D27 allure 截圖實作(2)
系列文
利用Python完成自動化測試專案 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言